import request from '@/utils/request';
import type { BaseBeanModel, ResponsePageData, ResponseBaseData, QueryParamModel } from '@/api/model/baseModel';

const basePath = '/appsys/onlineuser/AppOnlineUserRest';
/** 在线用户 */
export interface SysOnlineUserDto extends BaseBeanModel {
  /** 用户名 */
  name?: string;
  /** 登录名 */
  loginName?: string;
  /** 部门名称 */
  deptName?: string;
  /** 网络地址 */
  ip?: string;
  /** 登录时间 */
  loginTime?: any;
  loginTimeBegin?: any;
  loginTimeEnd?: any;
  /** 在线时间 */
  onlineTime?: string;
  /** 最后操作时间 */
  lastOperationTime?: any;
}

/**
 * 获取分页数据
 * @param param 查询参数
 * @returns 表格分页数据
 */
export function listOnlineUserByPage(param: QueryParamModel): Promise<ResponsePageData<SysOnlineUserDto>> {
  return request.post(`${basePath}/searchByPage/v1`, param);
}

/**
 * 踢出用户
 * @param param 用户信息
 * @returns 踢出用户结果
 */
export function deleteSession(param: { sessionId: string; userName: string }): Promise<ResponseBaseData<any>> {
  return request.post(`${basePath}/deleteSession/v1`, param);
}

/**
 * 批量踢出用户
 * @param param 用户信息
 * @returns 批量踢出用户结果
 */
export function deleteSessionAll(param: { sessionId: string; userName: string }[]): Promise<ResponseBaseData<any>> {
  return request.post(`${basePath}/deleteSessionList/v1`, param);
}

/**
 * 获取在线用户数量
 * @returns 在线用户数量
 */
export function getOnlineUserCount(): Promise<ResponseBaseData<number>> {
  return request.get(`${basePath}/getOnlineUserTotal/v1`);
}
